home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Utilities / Commodities / Yak / Source / Prefs / BGUI / Mousecycling_window.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-09  |  26.0 KB  |  556 lines

  1. /************************************************************************
  2. **********************  BGUI MOUSECYCLING WINDOW  ***********************
  3. ************************************************************************/
  4.  
  5. #define __USE_SYSBASE
  6.  
  7. #include <exec/execbase.h>
  8. #include <exec/memory.h>
  9. #include <exec/types.h>
  10. #include <intuition/intuition.h>
  11. #include <intuition/classes.h>
  12. #include <intuition/classusr.h>
  13. #include <intuition/imageclass.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/bgui.h>
  16. #include <libraries/bgui_macros.h>
  17. #include <workbench/workbench.h>
  18. #include <proto/exec.h>
  19. #include <proto/dos.h>
  20. #include <proto/intuition.h>
  21. #include <proto/bgui.h>
  22. #include <proto/wb.h>
  23. #include <clib/alib_protos.h>
  24. #include <string.h>
  25. #include <stdlib.h>
  26.  
  27. #include "code.h"
  28. #include "version.h"
  29. #include "yak.h"
  30. #include "hotkey_types.h"
  31. #include "MouseCycling_Window.h"
  32. #include "KeyDef_Window.h"
  33. #include "gui.h"
  34. #include "Handlers.h"
  35. #include "Requesters.h"
  36.  
  37. #define CATCOMP_NUMBERS
  38. #include "yak_locale_strings.h"
  39.  
  40. /************************************************************************
  41. *****************************  REFERENCES  ******************************
  42. ************************************************************************/
  43.  
  44. IMPORT LONG (*HandleReturnID)(LONG ID);
  45.  
  46. IMPORT char *PrefsHelp;
  47.  
  48. /************************************************************************
  49. *****************************  LOCAL DATA  ******************************
  50. ************************************************************************/
  51.  
  52. struct Window   *MouseCyclingWnd = NULL;
  53. Object                  *MouseCyclingWndObj = NULL;
  54. Object                  *MouseCyclingObjects[MouseCycling_CNT];
  55. Object                  *WindowToFrontGroup,*WindowToBackGroup,*ScreenCyclingGroup;
  56. Object                  *MouseCyclingPageObj = NULL;
  57. Object                  *MouseCyclingTabsObj = NULL;
  58. ULONG                    MouseCyclingPageActive = 0;
  59. UBYTE                   *MouseCyclingPageLabels[4];
  60. UBYTE                   *Click1Labels[4];
  61. struct IBox             MouseCyclingBox;
  62. BOOL                    MouseCyclingBoxValid = FALSE;
  63.  
  64. /************************************************************************
  65. *********************  CREATEMOUSECYCLINGWINDOW()  **********************
  66. *************************************************************************
  67. * Create the mousecycling window object tree. Returns the window object
  68. * ptr or NULL if create failed. Gadgets are initialised with default
  69. * values, InitMouseCyclingGadgets must be called after window opened to
  70. * reflect current settings.
  71. *
  72. *************************************************************************/
  73.  
  74. APTR CreateMouseCyclingWindow(void)
  75. {
  76. Object  *obj,*wtfpg,*wtbpg,*scrcycpg;
  77.  
  78. static struct TagItem MxToPageMap[] = {         /* update map between tabs */
  79.         MX_Active, PAGE_Active, TAG_DONE                /* gadget and page object */
  80. };
  81.  
  82. /* put localised strings into Clicks cycle gadget labels */
  83. Click1Labels[0] = getString(SIMPLE_CLICK_STRING);
  84. Click1Labels[1] = getString(DOUBLE_CLICK_STRING);
  85. Click1Labels[2] = getString(TRIPLE_CLICK_STRING);
  86. Click1Labels[3] = NULL;
  87.  
  88. /* put localised strings into MouseCycling page gadget labels */
  89. MouseCyclingPageLabels[0] = getString(WINDOW_TO_FRONT);
  90. MouseCyclingPageLabels[1] = getString(WINDOW_TO_BACK);
  91. MouseCyclingPageLabels[2] = getString(SCREENS_CYCLING);
  92. MouseCyclingPageLabels[3] = NULL;
  93.  
  94. /* Create Window To Front Page */
  95.  
  96. wtfpg = VGroupObject, Spacing(2),
  97.                 StartMember,
  98.                         CH_WinToFrontActive = CheckBoxObject,
  99.                                 LAB_Label,              getString(STATE_ACTIVE_STRING),
  100.                                 LAB_Place,              PLACE_RIGHT,
  101.                                 GA_ID,                  GD_WindowToFrontActive,
  102.                                 ButtonFrame,
  103.                                 FRM_Flags,              FRF_EDGES_ONLY,
  104.                         EndObject, FixMinWidth,
  105.                 EndMember,
  106.                 VarSpace(DEFAULT_WEIGHT/10),
  107.                 StartMember,
  108.                         WindowToFrontGroup = VGroupObject, Spacing(2),
  109.                                 StartMember,
  110.                                         CH_ScrToFront = CheckBoxObject,
  111.                                                 LAB_Label,              getString(ScreenToFront_ACT),
  112.                                                 LAB_Place,              PLACE_RIGHT,
  113.                                                 GA_ID,                  GD_ScreenToFront_Check,
  114.                                                 ButtonFrame,
  115.                                                 FRM_Flags,              FRF_EDGES_ONLY,
  116.                                         EndObject, FixMinWidth,
  117.                                 EndMember,
  118.                                 VarSpace(DEFAULT_WEIGHT/10),
  119.                                 StartMember,
  120.                                         CH_ExcludeWBWin = CheckBoxObject,
  121.                                                 LAB_Label,              getString(EXCLUDE_WB_WINDOW),
  122.                                                 LAB_Place,              PLACE_RIGHT,
  123.                                                 GA_ID,                  GD_ExcludeWbWindow,
  124.                                                 ButtonFrame,
  125.                                                 FRM_Flags,              FRF_EDGES_ONLY,
  126.                                         EndObject, FixMinWidth,
  127.                                 EndMember,
  128.                                 VarSpace(DEFAULT_WEIGHT/10),
  129.                                 StartMember,
  130.                                         STR_WinToFrontPat = StringObject,
  131.                                                 LAB_Label,              getString(INCLUDE_SCREENS),
  132.                                                 RidgeFrame,
  133.                                                 STRINGA_MaxChars,256,
  134.                                                 STRINGA_MinCharsVisible,10,
  135.                                                 GA_ID,                  GD_WindowToFrontPattern,
  136.                                                 GA_TabCycle,    TRUE,
  137.                                         EndObject, NoAlign,
  138.                                 EndMember,
  139.                                 VarSpace(DEFAULT_WEIGHT/10),
  140.                                 StartMember,
  141.                                         HGroupObject, Spacing(2),
  142.                                                 StartMember,
  143.                                                         CYC_WinToFrontClicks = CycleObject,
  144.                                                                 GA_ID,                  GD_WindowToFrontClicks,
  145.                                                                 ButtonFrame,
  146.                                                                 CYC_Labels,             Click1Labels,
  147.                                                                 CYC_Popup,              TRUE,   /* "drop-down" menu */
  148.                                                         EndObject,
  149.                                                 EndMember,
  150.                                                 StartMember,
  151.                                                         BT_HotkeyWinToFront = Button(
  152.                                                                         getString(DEFINITION_STRING),
  153.                                                                         GD_HotkeyWindowToFront),
  154.                                                 EndMember,
  155.                                         EndObject,
  156.                                 EndMember,
  157.                         EndObject, Weight(DEFAULT_WEIGHT*5),
  158.                 EndMember,
  159.         EndObject;
  160.  
  161. /* Create Window To Back Page */
  162.  
  163. wtbpg = VGroupObject, Spacing(2),
  164.                 StartMember,
  165.                         CH_WinToBackActive = CheckBoxObject,
  166.                                 LAB_Label,              getString(STATE_ACTIVE_STRING),
  167.                                 LAB_Place,              PLACE_RIGHT,
  168.                                 GA_ID,                  GD_WindowToBackActive,
  169.                                 ButtonFrame,
  170.                                 FRM_Flags,              FRF_EDGES_ONLY,
  171.                         EndObject, FixMinWidth,
  172.                 EndMember,
  173.                 VarSpace(DEFAULT_WEIGHT/10),
  174.                 StartMember,
  175.                         WindowToBackGroup = VGroupObject, Spacing(2),
  176.                                 VarSpace(DEFAULT_WEIGHT*11/10),
  177.                                 StartMember,
  178.                                         CH_ScrToBack = CheckBoxObject,
  179.                                                 LAB_Label,              getString(ScreenToBack_ACT),
  180.                                                 LAB_Place,              PLACE_RIGHT,
  181.                                                 GA_ID,                  GD_ScreenToBack_Check,
  182.                                                 ButtonFrame,
  183.                                                 FRM_Flags,              FRF_EDGES_ONLY,
  184.                                         EndObject, FixMinWidth,
  185.                                 EndMember,
  186.                                 VarSpace(DEFAULT_WEIGHT/10),
  187.                                 StartMember,
  188.                                         STR_WinToBackPat = StringObject,
  189.                                                 LAB_Label,              getString(INCLUDE_SCREENS),
  190.                                                 RidgeFrame,
  191.                                                 STRINGA_MaxChars,256,
  192.                                                 STRINGA_MinCharsVisible,10,
  193.                                                 GA_ID,                  GD_WindowToBackPattern,
  194.                                                 GA_TabCycle,    TRUE,
  195.                                         EndObject, NoAlign,
  196.                                 EndMember,
  197.                                 VarSpace(DEFAULT_WEIGHT/10),
  198.                                 StartMember,
  199.                                         HGroupObject, Spacing(2),
  200.                                                 StartMember,
  201.                                                         CYC_WinToBackClicks = CycleObject,
  202.                                                                 GA_ID,                  GD_WindowToBackClicks,
  203.                                                                 ButtonFrame,
  204.                                                                 CYC_Labels,             Click1Labels,
  205.                                                                 CYC_Popup,              TRUE,   /* "drop-down" menu */
  206.                                                         EndObject,
  207.                                                 EndMember,
  208.                                                 StartMember,
  209.                                                         BT_HotkeyWinToBack = Button(
  210.                                                                         getString(DEFINITION_STRING),
  211.                                                                         GD_HotkeyWindowToBack),
  212.                                                 EndMember,
  213.                                         EndObject,
  214.                                 EndMember,
  215.                         EndObject, Weight(DEFAULT_WEIGHT*5),
  216.                 EndMember,
  217.         EndObject;
  218.  
  219. /* Create Screens Cycling Page */
  220.  
  221. scrcycpg = VGroupObject, Spacing(2),
  222.                 StartMember,
  223.                         CH_ScrCyclingActive = CheckBoxObject,
  224.                                 LAB_Label,              getString(STATE_ACTIVE_STRING),
  225.                                 LAB_Place,              PLACE_RIGHT,
  226.                                 GA_ID,                  GD_ScreenCyclingActive,
  227.                                 ButtonFrame,
  228.                                 FRM_Flags,              FRF_EDGES_ONLY,
  229.                         EndObject, FixMinWidth,
  230.                 EndMember,
  231.                 VarSpace(DEFAULT_WEIGHT/10),
  232.                 StartMember,
  233.                         ScreenCyclingGroup = VGroupObject, Spacing(2),
  234.                                 VarSpace(DEFAULT_WEIGHT*22/10),
  235.                                 StartMember,
  236.                                         STR_ScrCyclingPat = StringObject,
  237.                                                 LAB_Label,              getString(INCLUDE_SCREENS),
  238.                                                 RidgeFrame,
  239.                                                 STRINGA_MaxChars,256,
  240.                                                 STRINGA_MinCharsVisible,10,
  241.                                                 GA_ID,                  GD_ScreenCyclingPattern,
  242.                                                 GA_TabCycle,    TRUE,
  243.                                         EndObject, NoAlign,
  244.                                 EndMember,
  245.                                 VarSpace(DEFAULT_WEIGHT/10),
  246.                                 StartMember,
  247.                                         HGroupObject, Spacing(2),
  248.                                                 StartMember,
  249.                                                         CYC_ScrCyclingClicks = CycleObject,
  250.                                                                 GA_ID,                  GD_ScreenCyclingClicks,
  251.                                                                 ButtonFrame,
  252.                                                                 CYC_Labels,             Click1Labels,
  253.                                                                 CYC_Popup,              TRUE,   /* "drop-down" menu */
  254.                                                         EndObject,
  255.                                                 EndMember,
  256.                                                 StartMember,
  257.                                                         BT_HotkeyScrCycling = Button(
  258.                                                                         getString(DEFINITION_STRING),
  259.                                                                         GD_HotkeyScreenCycling),
  260.                                                 EndMember,
  261.                                         EndObject,
  262.                                 EndMember,
  263.                         EndObject, Weight(DEFAULT_WEIGHT*5),
  264.                 EndMember,
  265.         EndObject;
  266.  
  267. obj = WindowObject,
  268.         WINDOW_PubScreenName, PubScreenName,
  269.         WINDOW_Title,           getString(MOUSECYCLING_STRING),
  270.         WINDOW_ScreenTitle,     getString(COPYRIGHT_STRING),
  271.         WINDOW_SmartRefresh, TRUE,
  272.         WINDOW_SizeBottom,      FALSE,                  /* put size gadget in right border */
  273.         WINDOW_SizeRight,       TRUE,
  274.         WINDOW_AutoAspect,      TRUE,                   /* automatic edges pixel width */
  275.         (MouseCyclingBoxValid ? WINDOW_Bounds : TAG_IGNORE), &MouseCyclingBox,
  276.         WINDOW_Position,        POS_CENTERMOUSE,
  277.         WINDOW_AppWindow,       TRUE,                   /* make it an appwindow */
  278.         WINDOW_RMBTrap,         TRUE,                   /* trap rmb - no menu */
  279.         WINDOW_CloseGadget,     FALSE,                  /* no windowclose gadget please */
  280.         (TextFont ? WINDOW_Font : TAG_IGNORE),  &Attr,  /* use font if specified */
  281.         WINDOW_HelpFile,        PrefsHelp,              /* online help system */
  282.         WINDOW_HelpNode,        "MouseCycling",
  283.         WINDOW_MasterGroup,
  284.                 VGroupObject, Spacing(4), HOffset(4), VOffset(4),
  285.                         StartMember,
  286.                                 MouseCyclingTabsObj = MxObject,
  287.                                         MX_TabsObject,          TRUE,
  288.                                         GA_ID,                          GD_Page_MCycling,
  289.                                         MX_Labels,                      MouseCyclingPageLabels,
  290.                                         MX_Active,              MouseCyclingPageActive,
  291.                                 EndObject,
  292.                         EndMember,
  293.                         StartMember,
  294.                                 HorizSeparator,
  295.                         EndMember,
  296.                         StartMember,
  297.                                 MouseCyclingPageObj = PageObject,
  298.                                         PageMember,             wtfpg,
  299.                                         PageMember,             wtbpg,
  300.                                         PageMember,             scrcycpg,
  301.                                         PAGE_Active,            MouseCyclingPageActive,
  302.                                 EndObject, Weight(DEFAULT_WEIGHT*5),
  303.                         EndMember,
  304.                         VarSpace(DEFAULT_WEIGHT/10),
  305.                         StartMember,
  306.                                 HorizSeparator,
  307.                         EndMember,
  308.                         StartMember,
  309.                                 HGroupObject,
  310.                                         VarSpace(DEFAULT_WEIGHT),
  311.                                         StartMember,
  312.                                                 BT_Return5 = Button(getString(OK_STRING),GD_Return5),
  313.                                         EndMember,
  314.                                         VarSpace(DEFAULT_WEIGHT),
  315.                                 EndObject,
  316.                         EndMember,
  317.                 EndObject,
  318.         EndObject;
  319.  
  320. if (obj)
  321.         {
  322.         /* add a notification map from page tabs gadget to page object */
  323.         AddMap(MouseCyclingTabsObj,MouseCyclingPageObj,MxToPageMap);
  324.  
  325.         /* add conditional map: disables WindowToFront */
  326.         /* group when CH_WinToFrontActive is unchecked */
  327.         AddCondit(CH_WinToFrontActive,WindowToFrontGroup,GA_Selected,TRUE,
  328.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  329.  
  330.         /* add conditional map: disables WindowToBack */
  331.         /* group when CH_WinToBackActive is unchecked */
  332.         AddCondit(CH_WinToBackActive,WindowToBackGroup,GA_Selected,TRUE,
  333.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  334.  
  335.         /* add conditional map: disables ScreenCycling */
  336.         /* group when CH_ScrCyclingActive is unchecked */
  337.         AddCondit(CH_ScrCyclingActive,ScreenCyclingGroup,GA_Selected,TRUE,
  338.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  339.         }
  340.  
  341. return(obj);
  342. }
  343.  
  344. /************************************************************************
  345. **********************  CLOSEMOUSECYCLINGWINDOW()  **********************
  346. *************************************************************************
  347. * Close the mousecycling window, disposing of the window object.
  348. *
  349. *************************************************************************/
  350.  
  351. void CloseMouseCyclingWindow(void)
  352. {
  353. if (MouseCyclingWnd)
  354.         {
  355.         GetAttr(WINDOW_Bounds,MouseCyclingWndObj,(ULONG *) &MouseCyclingBox);
  356.         GetAttr(PAGE_Active,MouseCyclingPageObj,&MouseCyclingPageActive);
  357.         MouseCyclingBoxValid = TRUE;
  358.         }
  359.  
  360. DisposeObject(MouseCyclingWndObj);
  361. MouseCyclingWndObj = NULL;
  362. MouseCyclingWnd = NULL;
  363. }
  364.  
  365. /************************************************************************
  366. *********************  INITMOUSECYCLINGGADGETS()  ***********************
  367. *************************************************************************
  368. * Initialize the mousecycling window gadgets to reflect current settings.
  369. *************************************************************************/
  370.  
  371. static void InitMouseCyclingGadgets(void)
  372. {
  373. /* Notification doesn't seem to enable/disable these groups initially */
  374. SetGadgetAttrs((struct Gadget *)WindowToFrontGroup, MouseCyclingWnd, NULL,
  375.                         GA_Disabled, !Window_To_Front.State, TAG_DONE);
  376. SetGadgetAttrs((struct Gadget *)WindowToBackGroup, MouseCyclingWnd, NULL,
  377.                         GA_Disabled, !Window_To_Back.State, TAG_DONE);
  378. SetGadgetAttrs((struct Gadget *)ScreenCyclingGroup, MouseCyclingWnd, NULL,
  379.                         GA_Disabled, !ScreenCycling.State, TAG_DONE);
  380.  
  381. InitWindowGadget(GDX_WindowToFrontActive,  GA_Selected, Window_To_Front.State, MCYCLING_WINDOW);
  382. InitWindowGadget(GDX_WindowToFrontClicks,  CYC_Active,  Window_To_Front.RequiredClicks-1, MCYCLING_WINDOW);
  383. InitWindowGadget(GDX_ScreenToFront_Check,  GA_Selected, Window_To_Front.Options & Opt_ScreenToFront, MCYCLING_WINDOW);
  384. InitWindowGadget(GDX_ExcludeWbWindow,      GA_Selected, Window_To_Front.Options & Opt_ExcludeWbWindow, MCYCLING_WINDOW);
  385. InitWindowGadget(GDX_WindowToFrontPattern, STRINGA_TextVal, (LONG)Window_To_Front.ScreenPatternData.patstr, MCYCLING_WINDOW);
  386.  
  387. InitWindowGadget(GDX_WindowToBackActive,   GA_Selected, Window_To_Back.State, MCYCLING_WINDOW);
  388. InitWindowGadget(GDX_WindowToBackClicks,   CYC_Active,  Window_To_Back.RequiredClicks-1, MCYCLING_WINDOW);
  389. InitWindowGadget(GDX_ScreenToBack_Check,   GA_Selected, Window_To_Back.Options & Opt_ScreenToBack, MCYCLING_WINDOW);
  390. InitWindowGadget(GDX_WindowToBackPattern,  STRINGA_TextVal, (LONG)Window_To_Back.ScreenPatternData.patstr, MCYCLING_WINDOW);
  391.  
  392. InitWindowGadget(GDX_ScreenCyclingActive,  GA_Selected, ScreenCycling.State, MCYCLING_WINDOW);
  393. InitWindowGadget(GDX_ScreenCyclingClicks,  CYC_Active,  ScreenCycling.RequiredClicks-1, MCYCLING_WINDOW);
  394. InitWindowGadget(GDX_ScreenCyclingPattern, STRINGA_TextVal, (LONG)ScreenCycling.ScreenPatternData.patstr, MCYCLING_WINDOW);
  395. }
  396.  
  397. /************************************************************************
  398. ********************  HANDLEMOUSECYCLINGRETURNID()  *********************
  399. *************************************************************************
  400. * Handle msgs arriving at mousecycling window - supply the ID returned by
  401. * BGUI. Returns either RET_OKAY or RET_QUIT.
  402. *
  403. *************************************************************************/
  404.  
  405. LONG HandleMouseCyclingReturnID(LONG id)
  406. {
  407. LONG    ret,num;
  408.  
  409. ret = RET_OKAY;
  410.  
  411. switch(id)
  412.         {
  413.         case GD_Return5:
  414.                 CloseMouseCyclingWindow();
  415.                 if (!ShowWindowID(ROOT_WINDOW))
  416.                         ret = RET_QUIT;
  417.                 break;
  418.  
  419.         /*******************/
  420.         /* Window To Front */
  421.         /*    Gadgets      */
  422.         /*******************/
  423.  
  424.         case GD_WindowToFrontActive:
  425.                 Window_To_Front.State ^= YKHK_ACTIVE;
  426.                 break;
  427.  
  428.         case GD_ScreenToFront_Check:
  429.                 Window_To_Front.Options ^= Opt_ScreenToFront;
  430.                 break;
  431.  
  432.         case GD_ExcludeWbWindow:
  433.                 Window_To_Front.Options ^= Opt_ExcludeWbWindow;
  434.                 break;
  435.  
  436.         case GD_WindowToFrontClicks:
  437.                 GetAttr(CYC_Active,CYC_WinToFrontClicks,(ULONG *)&num);
  438.                 Window_To_Front.RequiredClicks = num + 1;
  439.                 break;
  440.  
  441.         case GD_HotkeyWindowToFront:
  442.                 if (!SwitchToKeyDefWindow(MCYCLING_WINDOW,
  443.                                 &Window_To_Front,getString(WINDOW_TO_FRONT)))
  444.                         {
  445.                         PostError(getString(Couldnt_open_other_window_ERR));
  446.                         ret = RET_QUIT;
  447.                         }
  448.                 break;
  449.  
  450.         case GD_WindowToFrontPattern:
  451.                 NewPattern(GDX_WindowToFrontPattern, &Window_To_Front.ScreenPatternData,
  452.                         (struct Gadget *)STR_WinToFrontPat, MCYCLING_WINDOW);
  453.                 break;
  454.  
  455.         /******************/
  456.         /* Window To Back */
  457.         /*    Gadgets     */
  458.         /******************/
  459.  
  460.         case GD_WindowToBackActive:
  461.                 Window_To_Back.State ^= YKHK_ACTIVE;
  462.                 break;
  463.  
  464.         case GD_ScreenToBack_Check:
  465.                 Window_To_Back.Options ^= Opt_ScreenToBack;
  466.                 break;
  467.  
  468.         case GD_WindowToBackClicks:
  469.                 GetAttr(CYC_Active,CYC_WinToBackClicks,(ULONG *)&num);
  470.                 Window_To_Back.RequiredClicks = num + 1;
  471.                 break;
  472.  
  473.         case GD_HotkeyWindowToBack:
  474.                 if (!SwitchToKeyDefWindow(MCYCLING_WINDOW,
  475.                                 &Window_To_Back,getString(WINDOW_TO_BACK)))
  476.                         {
  477.                         PostError(getString(Couldnt_open_other_window_ERR));
  478.                         ret = RET_QUIT;
  479.                         }
  480.                 break;
  481.  
  482.         case GD_WindowToBackPattern:
  483.                 NewPattern(GDX_WindowToBackPattern, &Window_To_Back.ScreenPatternData,
  484.                         (struct Gadget *)STR_WinToBackPat, MCYCLING_WINDOW);
  485.                 break;
  486.  
  487.         /******************/
  488.         /* Screen Cycling */
  489.         /*    Gadgets     */
  490.         /******************/
  491.  
  492.         case GD_ScreenCyclingActive:
  493.                 ScreenCycling.State ^= YKHK_ACTIVE;
  494.                 break;
  495.  
  496.         case GD_ScreenCyclingClicks:
  497.                 GetAttr(CYC_Active,CYC_ScrCyclingClicks,(ULONG *)&num);
  498.                 ScreenCycling.RequiredClicks = num + 1;
  499.                 break;
  500.  
  501.         case GD_HotkeyScreenCycling:
  502.                 if (!SwitchToKeyDefWindow(MCYCLING_WINDOW,
  503.                                 &ScreenCycling,getString(SCREENS_CYCLING)))
  504.                         {
  505.                         PostError(getString(Couldnt_open_other_window_ERR));
  506.                         ret = RET_QUIT;
  507.                         }
  508.                 break;
  509.  
  510.         case GD_ScreenCyclingPattern:
  511.                 NewPattern(GDX_ScreenCyclingPattern, &ScreenCycling.ScreenPatternData,
  512.                         (struct Gadget *)STR_ScrCyclingPat, MCYCLING_WINDOW);
  513.                 break;
  514.  
  515.         default:
  516.                 break;
  517.         }
  518.  
  519. return(ret);
  520. }
  521.  
  522. /************************************************************************
  523. **********************  SHOWMOUSECYCLINGWINDOW()  ***********************
  524. *************************************************************************
  525. * Create and open the mousecycling window and initialize the gadgets to
  526. * reflect current settings. Sets up HandleReturnID function, curwin,
  527. * curwinobj and curwinID. Returns TRUE or FALSE to indicate success.
  528. *
  529. *************************************************************************/
  530.  
  531. BOOL ShowMouseCyclingWindow(void)
  532. {
  533. if (MouseCyclingWndObj = (Object *)CreateMouseCyclingWindow())
  534.         {
  535.         if (MouseCyclingWnd = WindowOpen(MouseCyclingWndObj))
  536.                 {
  537.                 InitMouseCyclingGadgets();
  538.                 HandleReturnID = HandleMouseCyclingReturnID;
  539.                 curwin = MouseCyclingWnd;
  540.                 curwinobj = MouseCyclingWndObj;
  541.                 curwinID = MCYCLING_WINDOW;
  542.                 return(TRUE);
  543.                 }
  544.         }
  545.  
  546. CloseMouseCyclingWindow();
  547. curwin = NULL;
  548. curwinobj = NULL;
  549. wndsigflag = 0L;
  550. appwinsigflag = 0L;
  551. return(FALSE);
  552. }
  553.  
  554.  
  555.